Page({
  data: {
    phone: '', // 用户输入的手机号
    code: '', // 用户输入的验证码
    agreed: false, // 是否同意用户协议
    isCodeSent: false, // 是否已发送验证码
    countdown: 60 // 倒计时
  },

  // 处理手机号输入
  handlePhoneInput(e) {
    this.setData({
      phone: e.detail.value.trim() // 去除前后空格
    });
  },

  // 处理验证码输入
  handleCodeInput(e) {
    this.setData({
      code: e.detail.value.trim() // 去除前后空格
    });
  },

  // 处理用户协议复选框
  handleTermsChange(e) {
    this.setData({
      agreed: e.detail.value.length > 0
    });
  },

  // 发送验证码
  sendCode() {
    const { phone } = this.data;

    // 校验手机号是否有效
    if (!phone || phone.length !== 11 || !/^\d{11}$/.test(phone)) {
      wx.showToast({
        title: '请输入有效的手机号',
        icon: 'none'
      });
      return;
    }

    // 调用后端发送验证码接口
    wx.request({
      url: 'http://localhost:8080/sms/sendCode',
      method: 'POST',
      data: { phone },
      success: (res) => {
        if (res.data.code === 200) {
          wx.showToast({
            title: '验证码已发送',
            icon: 'none'
          });
          this.startCountdown(); // 开始倒计时
        } else {
          wx.showToast({
            title: res.data.message || '验证码发送失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('请求失败', err);
        wx.showToast({
          title: '请求失败，请稍后重试',
          icon: 'none'
        });
      }
    });
  },

  // 开始倒计时
  startCountdown() {
    this.setData({ isCodeSent: true });
    let countdown = 60;

    // 设置定时器，每秒更新倒计时
    const timer = setInterval(() => {
      countdown--;
      this.setData({ countdown });

      // 倒计时结束
      if (countdown <= 0) {
        clearInterval(timer);
        this.setData({ isCodeSent: false, countdown: 60 });
      }
    }, 1000);
  },

  // 验证验证码并登录
  verifyCode() {
    const { phone, code, agreed } = this.data;

    // 校验用户协议是否同意
    if (!agreed) {
      wx.showToast({
        title: '请先同意服务条款',
        icon: 'none'
      });
      return;
    }

    // 校验手机号是否有效
    if (!phone || phone.length !== 11 || !/^\d{11}$/.test(phone)) {
      wx.showToast({
        title: '请输入有效的手机号',
        icon: 'none'
      });
      return;
    }

    // 校验验证码是否有效
    if (!code || code.length !== 6 || !/^\d{6}$/.test(code)) {
      wx.showToast({
        title: '请输入有效的验证码',
        icon: 'none'
      });
      return;
    }

    // 调用后端验证验证码接口
    wx.request({
      url: 'http://localhost:8080/sms/verifyCode',
      method: 'POST',
      data: { phone, code },
      success: (res) => {
        if (res.data.code === 200) {
          wx.showToast({
            title: '登录成功',
            icon: 'none'
          });
          wx.switchTab({
            url: '/pages/index/index'
          });
        } else {
          wx.showToast({
            title: res.data.message || '验证码错误',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('请求失败', err);
        wx.showToast({
          title: '请求失败，请稍后重试',
          icon: 'none'
        });
      }
    });
  },

  // 跳转到用户协议页面
  showTerms() {
    wx.navigateTo({
      url: '/pages/terms/terms'
    });
  }
});
